#ifndef ANIMATESTACKEDWIDGET_H
#define ANIMATESTACKEDWIDGET_H

#include<QStackedWidget>
class AnimateStackedWidget : public QStackedWidget
{
    Q_OBJECT// 这是一个宏，用于启用 Qt 的元对象系统，支持信号与槽机制、Q_PROPERTY属性系统
    Q_PROPERTY(float rotateVal READ GetRotateVal WRITE SetRotateVal)// 声明一个旋转属性 rotateVal，支持读取和写入
public:
    AnimateStackedWidget(QWidget *parent = nullptr);
    ~AnimateStackedWidget();

    void animation(int index);// 动画启动函数，启动页面翻转动画

    void paintEvent(QPaintEvent *event);// 自定义的绘制事件，用于绘制动画效果

     // 获取和设置旋转角度的方法
    float GetRotateVal()
    {
        return m_rotateVal;
    };

    void SetRotateVal(float val)
    {
        m_rotateVal=val;
    };

    // 获取和设置动画起始角度的方法
    float GetstartVal()
    {
        return m_startVal;
    };

    void SetstartVal(float val)
    {
        m_startVal=val;
    };

    // 获取和设置动画结束角度的方法
    float GetendVal()
    {
        return m_endVal;
    };

    void SetendVal(float val)
    {
        m_endVal=val;
    };

    //自定义成员
private:
    float m_rotateVal;//旋转值
    int m_pageindex;//页面
    int m_startVal;//起始值
    int m_endVal;//结束值

    bool m_isAnimating;// 动画是否正在进行的标志

    //自定义槽函数
private slots:
    void onValueChanged();// 当动画的值发生变化时的处理函数
    void onFinished();// 动画完成后的处理函数
};

#endif // ANIMATESTACKEDWIDGET_H
